home *** CD-ROM | disk | FTP | other *** search
-
- SENDMAIL + UUCP HOWTO
-
-
- _Author:_ Jamal Hadi Salim (jamal@glcom.com or hadi@cyberus.ca)
-
-
-
-
- History:
-
- Initial edition July/96: works only with non-bind edition of sendmail
-
- Oct 01 /96: works with the redhat supplied binary
-
- Oct 07 /96: added/modified a tip on how to compile non-bind sendmail
-
- Oct 25 /96: added/modified a tip on how to keep sendmail
- getHostbyAddr() happy via a dummy /etc/hosts entry
-
- Mar 15 /97: I am amazed at the response/feedback i am receiving so i
- decided to refine this further. Fixed some small errors; added diagram
- + references.
-
- Oct 25/97: Htmlise+ add blurb on DNS capable machines
-
-
- _________________________________________________________________
-
-
-
- After finally settling down and properly reading TFM (the Bat Book, to
- be precise) i have solved the Caramilk secret! The steps below have
- been tested with the binary supplied by RedHat. Perhaps i should send
- this tip to the maintainer of the Sendmail FAQ too since there is
- absolutely no mention of UUCP interworking with sendmail there.
-
-
- What this Document tries to show you
-
- How to setup a single machine, reffered to as _me.com _in the example,
- with no direct access to the internet to route mail for you via
- sendmail and UUCP to a 'smarter host' eg your ISP.
- Optionally you can configure this machine to feed other machines i.e
- you are their 'smart' host or gateway.
-
- What this Document does not tell you
-
- I have been receiving incredible number of questions regarding topics
- which are beyond the focus of this HOWTO. The purpose of this document
- is not to describe them so please try not send me any questions on the
- following:
-
-
- a) How to setup UUCP.
-
- Refer to many fine references on this, including:
-
- UUCP HOWTO (Vince Skahan, )
-
- Using and managing UUCP (Ed Ravin et al -- publisher O'reilly) which i
- think is the best authority on UUCP
-
- Linux Network Administrator Guide (Olaf Kirch)
-
-
- b) how to setup DNS.
-
- Refer to the many fine references on this, including:
-
- Caching named mini howto (Nicolai Langfeldt)
-
- The bat book (Sendmail;Costalles, Allman, Rickert;publisher O'reilly)
-
- DNS and BIND (Publisher O'reilly)
-
- TCP/IP Network Administration (Hunt, Craig;Publisher O'reilly)
-
- Linux Network Administrator Guide (Olaf Kirch)
-
- sendmail Theory and Practice (Avolio and Vixie; publisher Digital
- press)
-
-
- c) how to setup databases (other than the mailertable) to work with sendmail.
-
- Refer to the many fine references on this, including:
-
- The bat book (Sendmail;Costalles, Allman, Rickert -- publisher
- O'reilly)
-
- TCP/IP administration (Publisher O'reilly)
-
- Sendmail Theory and Practice (Avolio and Vixie; publisher Digital
- press)
-
- Docs bundled with sendmail d) how to write or modify rulesets or
- mailers.
-
- All the above references in c)
-
- You can also find help on the following _newsgroups_:
- comp.mail.sendmail
- comp.mail.uucp
- comp.os.linux.networking
- _IRC channels_
- #linux, #unix
-
- _________________________________________________________________
-
- THE SETUP
-
- This is for a system, hypothecally named _me.com_, whose mail is sent
- out only via UUCP. _mysmarthost _is the ISPs hostname as set up in the
- _uucp sys file _and _me.com _is the hostname we use or are known by in
- the MX records on the internet.
- _mysmarthost_ hooks to the internet. We really dont care how it does
- it, we just know it knows how to get us there.
- _me.com_, whose setup we describe in the example, feeds sites
- _down.com _and _system1.org _and their subnodes. _me.com _connects to
- _down.com_ via TCP/IP and connects to _system1.org _via raw UUCP using
- a phone line.
- The setup description is shown below:
-
- ------------------------
- | |
- | Internet |
- | |
- -----------------------
- |
- | PPP/dedicated line running TCP-IP
- |
- -------------
- | |
- |mysmarthost | Authoritative name server for
- | | *.me.com, *.down.com, *.system1.org
- | |
- --------------
- |
- | UUCP via a phone line receive for
- | system1.org, *.system1.org,*.down.com, down.com
- | as well as me.com and *.me.com
- ------------
- | * ***** * |
- ------------ | * me.com * | ------
- | * * | |
- | | * ***** * | |
- | ------------ |
- |UUCP via phone line | uucp via TCP/IP
- | |
- ----------- -----------
- | | | |
- |system1.org| | down.com |-------
- | | | | |
- ---------- ------------ |
- | &
- nbsp; |
- | &
- nbsp; |
- | &
- nbsp; | LAN: smtp to nodes
- | UUCP phone line
- | &
- nbsp; |
- ----------- -------------
- | | | &nbs
- p; |
- |system1's| | down's |
- |subnodes | | LAN |
- | | ------------
- ----------
-
- pre-requisites
-
- _1)_ If you are already running DNS or have a pointer to a DNS server
- (in your /etc/resolv.conf) and are on a live connection to the net
- then skip this part. You are safe. You dont have to do any 'smart'
- thing skip to _2)_
- If you are on a machine using uucp for mail then you dont really need
- to compile bind/resolv into sendmail;
-
- How to survive name canonicalization on a stand-alone machine with no DNS
-
- _PART I_
- If you get a pre-compiled sendmail with BIND in it you can still live
- with it (As is the case with Redhat supplied sendmail).
-
- a) Refer to my solution for this based on the m4 file described (my
- favorite). Try to use this option unless you really insist on b) or c)
- below OR
-
- b)If you talk to me i could supply you with a non-BIND compiled
- version (8.8.5). Perhaps RedHat should consider supplying two sendmail
- binaries (like slakware) One with BIND and the other with no BIND. OR
-
- c) The quickest solution to get sendmail with no bind is to edit
- _src/conf.h_ lines below to read as i have shown:
-
- _# ifndef NAMED_BIND conf.h:# define NAMED_BIND 0 /* use Berkeley
- Internet Domain Server */_
-
- _PART II_:
- Sendmail would however normally insist on doing name look ups to
- resolve the host part using _gethostbyaddr()_ for each email it sends
- (even if you tell it not to canonify names).
-
- a) use an _RFC1597_ IP address (10.0.0.0-10.255.255.255,
- 172.16.0.0-172.31.255.255, 192.168.0.0-192.168.255.255)
- Edit _/etc/hosts _and add the following as a sample for the host
- myhost
- _10.0.0.1 myhost.me.com myhost_ or
- b) If you use NIS (and NIS is compiled into sendmail as seems to be
- the case in Redhat. ) make sure the _/etc/nsswitch.conf _file
- contains:
- _hosts: files dns_ and in _/etc/hosts_ and add the following as a
- sample for the host myhost [again using RFC1597 IP addressing scheme]
- _10.0.0.1 myhost.me.com myhost_
-
- _NOTE: _---- In both a) and b) above it is critical that you list the
- long (fully qualified) in the /etc/hosts file used. i.e the line
- should read _10.0.0.1 myhost.me.com myhost_ and NOT _10.0.0.1 myhost
- _you will also need to define the sendmail _$j _macro to hold
- _myhost.me.com_
- add the Following line to your _/etc/sendmail.cf _after it is
- generated _Djmyhost.me.com_ (or you can use
- _MASQUAREADE_AS(myhost.me.com)_ in the _.mc_ below)
-
- _NOTE_!!!!! _myhost_ as a domain name is given as an example; you dont
- have to use it as is. Pick your own hostname if you dont have one
- already.
-
- _________________________________________________________________
-
- __
-
- _2)_ Ensure that you have makemap and it is capable of supporting hash
- and or the more common dbm format or even btree format (The Redhat
- version does not support dbm). Makemap is normaly distributed with
- sendmail.
-
-
-
- SETUP (the mc file)
-
- I) create your .mc file using your favorite editor; i'll call this
- file _my.mc_
-
- _a) No DNS -- standalone_
-
- _________________________________________________________________
-
-
- i_nclude(`../m4/cf.m4')_
- _VERSIONID(`me.com's setup with uucp created by xxxx --no dns ')_
- _dnl OSTYPE(linux)_
- _FEATURE(nodns)dnl_
- _FEATURE(nocanonify)dnl_
- _FEATURE(always_add_domain)dnl_
- _FEATURE(mailertable, hash /etc/mailertable)dnl_
- _MAILER(local)dnl_
- _MAILER(smtp)dnl_
- _MAILER(uucp)_
- _define(`SMART_HOST', uucp-dom:mysmarthost)_
-
- _________________________________________________________________
-
-
-
- Let's dissect this:
-
- _include(`../m4/cf.m4')_ requests for the m4 macro found in
- ../m4/cf.m4 to be include to resolve some things
-
- _VERSIONID(`me.com's setup with uucp created by xxxx')dnl_ This is
- used to distinguish the different versions of .cf file you might end
- up creating.
-
- _OSTYPE(linux)_ This is used to define/redefine linux specific stuff.
- It is safe to have it here.
-
- _FEATURE(nodns)dnl _This says we dont have a DNS server (so in effect
- we are using uucp only for mail. Sendmail must be compiled not to use
- bind) This is now obsolete. I will let it stay here just in case you
- use an older version of sendmail.
-
- _FEATURE(nocanonify)dnl _This says Don't pass addresses to _$[ ... $]_
- for canonification. Normally if you have BIND compiled in sendmail
- would try and expand the alias/IP address to a canonical name using
- DNS. You dont wanna do this if all you have are feeds which connect to
- you via UUCP i.e you are a stand alone.
-
- _FEATURE(always_add_domain)dnl_ This adds the local domain host name
- even on locally delivered mail Not necessary i just like it; _This
- might not be a safe feature since spammers, with proper setup
- conditions, can abuse you_.
- me.com is not connected to the net via tcp/ip so it is safe
-
- _FEATURE(mailertable, hash /etc/mailertable)dnl_ the file
- _/etc/mailertable_ is going to be a _hash _database where we will
- store routing information of certain sites. If you dont have anyone
- who you feed uucp to then you dont need this. More on this later. If
- you wanted to use the _dbm _format you would have_
- FEATURE(mailertable, dbm /etc/mailertable)dnl _If you wanted to use
- the _btree_ format you would have _FEATURE(mailertable, btree
- /etc/mailertable)dnl_
-
- _MAILER(local)dnl MAILER(smtp)dnl MAILER(uucp)_ These are the mailers
- we use.
-
- _define(`SMART_HOST', uucp-dom:mysmarthost) _Our smart host is our ISP
- who is defined in the uucp _sys_ file as _system mysmarthost_. Any
- messages that we cant handle (i.e ones for domains or mailers we dont
- understand) will be passed on to our smarthost/ISP to figure out. note
- we use uucp-dom as the uucp mailer. This particular mailer uses smtp
- rewriting rules.
-
-
- _b) DNS on_
-
- _________________________________________________________________
-
-
- _include(`../m4/cf.m4')_
- _VERSIONID(`me.com's setup with uucp created by xxxx --dns
- enabled')dnl_
- _OSTYPE(linux)_
- _FEATURE(always_add_domain)dnl_
- _FEATURE(mailertable, hash /etc/mailertable)dnl_
- _MAILER(local)dnl_
- _MAILER(smtp)dnl_
- _MAILER(uucp)_
- _define(`SMART_HOST', uucp-dom:mysmarthost)_
-
- _________________________________________________________________
-
-
-
-
- II) create your sendmail.cf file
-
- a) backup your old _/etc/sendmail.cf_ file
- b) overwrite the sendmail.cf with the new one: _m4 my.mc >
- /etc/sendmail.cf_
- c) verify that the sendmail.cf file was correctly created based on
- your specifications.
- Some of the gotchas that i came across were: - _missing uucp-dom
- mailer _This was because i didnt have the smtp mailer entry. Actually,
- i understand it is important to have it defined before the uucp
-
-
- III) create your /etc/mailertable
-
- if you dont have uucp sites feeding off you skip this step
-
- a) create/edit the file /etc/mailertable
-
- sample /etc/mailertable
-
- _________________________________________________________________
-
-
-
- _system1.org uucp-dom:system1_
- _.system1.org uucp-dom:system1_
- _down.com uucp-dom:down_
- _up.down.com error: Host is unknown at me.com_
- _.down.com uucp-dom:down_
- _.me.com error: Host unknown at me.com_
-
- _________________________________________________________________
-
-
-
- This says anything that is addressed to _system1.org_ or to
- _*.system1.org _that we receive will be sent using the _uucp-dom_
- mailer and be delivered to _system1_ (defined in the the uucp _sys
- _file) in other words we are doing the mail routing for _*.system1.org
- ; _similar for _down.com _and its subnodes except for the additional
- filtering; we bounce back any mail for down's subnode _up.down.com
- _using sendmail's built-in _error _mailer with the message _"Host is
- unknown at me.com"_; This is because we have been asked to do this by
- the admin at _down.com._ To bounce unknown subdomains to us we use the
- last line in the mailertable (which is what all unknown nodes default
- to).
- b) create the database with _makemap_
-
- if you use _hash_:
- _makemap hash /etc/mailertable < /etc/mailertable_
- if you use _dbm:_
- _makemap dbm /etc/mailertable </etc/mailertable_
- if you use_ btree:_
- _makemap btree /etc/mailertable </etc/mailertable___
-
- do this every time you change the file.
- __
-
- IV) restart sendmail
-
- V) test sendmail
-
- i) sendmail -bv user@destination
- ii) using sendmail -bt and enter various addresses using 3,0
- ruleset to see where they end up and the various rulesets and cf walks
- taken.
-
- _You are set!_
-
-
- _________________________________________________________________
-
- TODO
-
-
-
- 1) Add info on setting up system down.com (so as to show how to
- take care of those smtp nodes)
- 2) Add info on how to setup news to be delivered via UUCP
- (preferably INN). This might require changing the title of the doc.
-